home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / DISHANT.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1997-01-28  |  6.9 KB  |  253 lines

  1. 10  'DISHANT - Parabolic Dish Reflector - 15 AUG 92 rev. 22 OCT 96
  2. 20  IF EX$=""THEN EX$="EXIT"
  3. 30  COMMON EX$
  4. 40  CLS:KEY OFF:SCREEN 0
  5. 50  COLOR 7,0,1
  6. 60  DIM X(16),Y(16)
  7. 70  PI=3.14159
  8. 80  U$="#####.##"
  9. 90  U1$="#####.#"
  10. 100  UL$=STRING$(80,205)
  11. 110  T$=" PARABOLIC DISH REFLECTOR"
  12. 120  '
  13. 130  '.....start
  14. 140  CLS
  15. 150  A=0:D=0:F=0:G=0:H=0:L=0:N=0:X=0:Y=0:Z=0
  16. 160  COLOR 15,2
  17. 170  PRINT T$;TAB(57);"by George Murphy VE3ERP ";
  18. 180  COLOR 1,0:PRINT STRING$(80,223);
  19. 190  COLOR 7,0
  20. 200  PRINT " Press number in < > to:
  21. 210  PRINT UL$;
  22. 220  PRINT "  < 1 >  RUN Dish Reflector program"
  23. 230  PRINT "  < 2 >  RUN Parabola Graphics program (draws parabolas to scale)"
  24. 240  PRINT "  < 3 >  RUN Circular Waveguide Dish Feeds program"
  25. 250  PRINT "  < 4 >  READ ME"
  26. 260  PRINT UL$;
  27. 270  PRINT "  < 0 >  EXIT"
  28. 280  Z$=INKEY$
  29. 290  IF Z$="1"THEN CLS:GOTO 360
  30. 300  IF Z$="2"THEN CLS:CHAIN "\bas\prog\dishmath"
  31. 310  IF Z$="3"THEN CLS:CHAIN"circfeed"
  32. 320  IF Z$="4"THEN CLS:GOTO 2270
  33. 330  IF Z$="0"THEN CLS:RUN EX$
  34. 340  GOTO 280
  35. 350  '
  36. 360  GOSUB 1760    'graphics page
  37. 370  GOSUB 2410    'screen dump
  38. 380  CLS
  39. 390  COLOR 15,2
  40. 400  PRINT T$;TAB(57);"by George Murphy VE3ERP ";
  41. 410  COLOR 1,0:PRINT STRING$(80,223);
  42. 420  COLOR 7,0
  43. 430  PRINT " Press number in < > to choose standard units of measure:"
  44. 440  PRINT UL$;
  45. 450  PRINT "   < 1 >  Metric"
  46. 460  PRINT "   < 2 >  U.S.A./Imperial"
  47. 470  Z$=INKEY$
  48. 480  IF Z$="1"THEN UM=2.54:UM$=" cm.":GOTO 510
  49. 490  IF Z$="2"THEN UM=1:UM$=" in.":GOTO 510
  50. 500  GOTO 470
  51. 510  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  52. 520  '
  53. 530  '.....inputs
  54. 540  IF Y=0 THEN PRINT " ENTER: Radius of dish (";UM$;").........Y= ";
  55. 550  IF Y=0 THEN INPUT Y:Y=Y/UM:GOSUB 740
  56. 560  IF G<>0 THEN 610
  57. 570  IF X=0 THEN PRINT " ENTER: Depth of dish (";UM$;") if known:X= ";
  58. 580  IF X=0 THEN INPUT X:X=X/UM:GOSUB 740
  59. 590  IF F=0 THEN PRINT " ENTER: Focal Length (";UM$;")...........Z= ";
  60. 600  IF F=0 THEN INPUT F:F=F/UM:GOSUB 740
  61. 610  IF X OR F THEN 630
  62. 620  IF G=0 THEN INPUT " ENTER: Acceptance angle (degrees)..AFB= ";G:GOSUB 740
  63. 630  IF N=0 THEN INPUT " ENTER: Number of rings (12 maximum).....";N
  64. 640  IF N<=12 THEN 710
  65. 650  BEEP:PRINT
  66. 660  PRINT " There is only enough space on the screen ";
  67. 670  PRINT "to print data for 12 rings!"
  68. 680  PRINT:PRINT " Press any key to enter a number less than 13........."
  69. 690  IF INKEY$=""THEN 690
  70. 700  N=0:GOTO 630
  71. 710  GOSUB 740
  72. 720  GOTO 530
  73. 730  '
  74. 740  '.....calculate missing factors
  75. 750  IF G>90 THEN GG=1
  76. 760  IF A=0 AND G<>0 THEN A=G*PI/180
  77. 770  IF Y=0 AND D<>0 THEN Y=D/2
  78. 780  IF D=0 AND Y<>0 THEN D=2*Y
  79. 790  IF Z=0 AND Y*A<>0 THEN Z=Y/TAN(A)
  80. 800  IF Y=0 AND F*X<>0 THEN Y=SQR(4*F*X)
  81. 810  IF X=0 AND Y*F<>0 THEN X=Y^2/4/F
  82. 820  IF F=0 AND Y*X<>0 THEN F=Y^2/4/X
  83. 830  IF Y*X*F*N<>0 THEN 870
  84. 840  IF N THEN GOSUB 1650
  85. 850  RETURN
  86. 860  '
  87. 870  '.....screen print
  88. 880  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  89. 890  PRINT " RING #";
  90. 900  PRINT TAB(22);"Diameter";
  91. 910  PRINT TAB(33);"Radius(Y)";
  92. 920  PRINT TAB(46);"Depth(X)";
  93. 930  PRINT TAB(58);"Circumf.";
  94. 940  PRINT TAB(68);"Capture Area"
  95. 950  PRINT UL$;
  96. 960  W=Y/N
  97. 970  '
  98. 980  FOR Z=1 TO N
  99. 990  Y(Z)=W*Z            'Radius                 Y co-ordinate
  100. 1000  X(Z)=(W*Z)^2/4/F    'Distance from apex     X co-ordinate
  101. 1010  L=22.5*PI/180       'Angle in radians
  102. 1020  PRINT USING "###";Z;
  103. 1030  PRINT TAB(19);USING U$;2*Y(Z)*UM;:PRINT UM$;
  104. 1040  PRINT TAB(31);USING U$;Y(Z)*UM;:PRINT UM$;
  105. 1050  PRINT TAB(43);USING U$;X(Z)*UM;:PRINT UM$;
  106. 1060  PRINT TAB(55);USING U$;PI*2*Y(Z)*UM;:PRINT UM$;
  107. 1070  IF Z<>N THEN PRINT ""
  108. 1080  NEXT Z
  109. 1090  IF UM=1 THEN A=PI*Y(Z-1)^2/144:M$=" ft<UNK! {FD22}>:GOTO 1110
  110. 1100  A=(Y(Z-1)*25.4)^2*PI/10^6:M$=" m<UNK! {FD00}><UNK! {0006}><UNK! {001E}>V<UNK! {0004}>PRINT TAB(68);USING "#,###.##";A;:PRINT M$
  111. 1120  '
  112. 1130  LOCATE CSRLIN-1,5:PRINT "( Outer Ring )"
  113. 1140  PRINT UL$;
  114. 1150  IF F=X THEN A=PI/2
  115. 1160  IF F>X THEN A=ATN (Y/(F-X))
  116. 1170  IF F<X THEN A=PI-(ATN (Y/(X-F)))
  117. 1180  PRINT " Focal Length(Z):";USING "##,###.##";F*UM;:PRINT UM$;
  118. 1190  PRINT TAB(36)"Acceptance angle AFB:";USING "####.##";A*180/PI;
  119. 1200  PRINT "<UNK! {00F8}>"
  120. 1210  LN=CSRLIN
  121. 1220  PRINT UL$;
  122. 1230  PRINT " Do you want a performance estimate?   (y/n)"
  123. 1240  Z$=INKEY$
  124. 1250  IF Z$="n"OR Z$="N"THEN 1290
  125. 1260  IF Z$="y"OR Z$="Y"THEN 1330
  126. 1270  GOTO 1240
  127. 1280  '
  128. 1290  VIEW PRINT LN TO 24:CLS:VIEW PRINT:LOCATE LN
  129. 1300  GOSUB 2410
  130. 1310  GOTO 110   'start
  131. 1320  '
  132. 1330  VIEW PRINT LN TO 24:CLS:VIEW PRINT:LOCATE LN
  133. 1340  INPUT " ENTER: Frequency.(MHz)...";H
  134. 1350  LOCATE CSRLIN-1:PRINT STRING$(80,32);:LOCATE CSRLIN-1
  135. 1360  PRINT "     Frequency....";USING U$;H;:PRINT " MHz"
  136. 1370  '
  137. 1380  WM=300/H              'wavelength in meters
  138. 1390  WF=WM/0.3048           'wavelength in feet
  139. 1400  PRINT "     Wavelength..."USING U$;WM*100;
  140. 1410  PRINT " cm."
  141. 1420  '
  142. 1430  PRINT " Approximate:-"
  143. 1440  G=0.55*(PI*D/12)^2/WF  'power ratio @ 55% efficiency
  144. 1450  PRINT "     Power Ratio..";USING U1$;G;
  145. 1460  PRINT ":1 over an isotropic antenna"
  146. 1470  '
  147. 1480  LF=0.434294           'LOG factor 1/log(10) to convert to base 10
  148. 1490  DB=10*LOG(G/0.55)*LF   'gain @ 55% efficiency
  149. 1500  PRINT "     Gain.........";USING U1$;DB-2.14;
  150. 1510  PRINT " dB over a dipole"
  151. 1520  '
  152. 1530  BW=70*WF/D*12        'beamwidth
  153. 1540  IF BW<=90 THEN 1570
  154. 1550  PRINT " The beamwidth is greater than 90<UNK! {00F8}> at this frequency.";
  155. 1560  GOTO 1590
  156. 1570  PRINT "     Beamwidth....";USING U1$;BW;:PRINT "<UNK! {00F8}>";
  157. 1580  '
  158. 1590  GOSUB 2410
  159. 1600  GOTO 110   'start
  160. 1610  END
  161. 1620  '
  162. 1630  '.....calculate other factors from angle
  163. 1640  IF Z=0 THEN RETURN
  164. 1650  X=0
  165. 1660  T=1000
  166. 1670  IF T<=9.999E-06 THEN VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3:GOTO 1730
  167. 1680  X=X+T
  168. 1690  IF GG THEN F=X-Z ELSE F=X+Z
  169. 1700  Q=SQR(4*F*X)
  170. 1710  IF Q>=Y THEN X=X-T:T=T/10:GOTO 1670
  171. 1720  GOTO 1670
  172. 1730  IF GG THEN SWAP F,X
  173. 1740  RETURN
  174. 1750  '
  175. 1760  '.....graphics diagram
  176. 1770  CLS:COLOR 0,7
  177. 1780  PRINT "                          "
  178. 1790  PRINT "              B DEFSNGSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR "
  179. 1800  PRINT "             CSRLINOFF         CALL "
  180. 1810  PRINT "            CSRLINOFF|         CALL "
  181. 1820  PRINT "           CSRLINOFF |         CALL "
  182. 1830  PRINT "          CSRLINOFF  |         CALL "
  183. 1840  PRINT "         CSRLINOFF   |         CALL "
  184. 1850  PRINT "        CSRLINOFF    |         CALL "
  185. 1860  PRINT "       CSRLINOFF     |         CALL "
  186. 1870  PRINT "      INKEY$OFF      |           "
  187. 1880  PRINT "      CSRLIN       |         Y "
  188. 1890  PRINT "     INKEY$OFF       |           "
  189. 1900  PRINT "     CSRLIN        |         CALL "
  190. 1910  PRINT "    INKEY$OFF        |         CALL "
  191. 1920  PRINT "    CSRLIN         |         CALL "
  192. 1930  PRINT "   INKEY$OFF         |         CALL "
  193. 1940  PRINT "   CSRLIN          |         CALL "
  194. 1950  PRINT "  INKEY$OFF          |         CALL "
  195. 1960  PRINT "  CSRLIN           |         CALL "
  196. 1970  PRINT "  ASOUNDSOUNDSOUNDSOUND<AXIS>SOUNDBEEPSOUNDSOUNDSOUNDSOUNDSOUNDF DEFSNGSOUND' "
  197. 1980  PRINT "  CALL           |     CALL     "
  198. 1990  PRINT "  CALLDEFSNGSOUNDSOUNDSOUND X SOUNDSOUNDSOUNDDEFDBLCALL     CALL     "
  199. 2000  PRINT "  CALLDEFSNGSOUNDSOUNDSOUNDSOUNDSOUNDSOUND Z SOUNDSOUNDSOUNDSOUNDSOUNDSOUNDDEFDBLCALL     "
  200. 2010  PRINT "                          ";
  201. 2020  COLOR 7,0
  202. 2030  D$=STRING$(52,205)
  203. 2040  C=28
  204. 2050  LOCATE  1,C:PRINT "PARABOLIC DISH  (One half of dish profile is shown)."
  205. 2060  LOCATE  2,C:PRINT D$
  206. 2070  LOCATE  3,C:PRINT "(Due to the graphics limitations of your screen when"
  207. 2080  LOCATE  4,C:PRINT "in the Text mode, as it now is, the parabolic curve"
  208. 2090  LOCATE  5,C:PRINT "shown here is represented by stepped blocks)."
  209. 2100  LOCATE  6,C:PRINT D$
  210. 2110  LOCATE  7,C:PRINT "A = Centre of back of dish."
  211. 2120  LOCATE  8,C:PRINT "B = Any point on circumference."
  212. 2130  LOCATE  9,C:PRINT "F = Focal point of parabola."
  213. 2140  LOCATE 10,C:PRINT "    (this is where you locate your antenna)"
  214. 2150  LOCATE 11,C:PRINT "L = Acceptance angle AFB."
  215. 2160  LOCATE 12,C:PRINT "X = Depth (distance from back of dish)"
  216. 2170  LOCATE 13,C:PRINT "Y = Radius of dish."
  217. 2180  LOCATE 14,C:PRINT "Z = Focal Length (distance of focal point from A)."
  218. 2190  LOCATE 15,C:PRINT D$
  219. 2200  LOCATE 16,C:PRINT "The program will calculate the X and Y co-ordinates"
  220. 2210  LOCATE 17,C:PRINT "(depth and radius) of several inner rings around the"
  221. 2220  LOCATE 18,C:PRINT "center line of the dish. These are also the X and Y"
  222. 2230  LOCATE 19,C:PRINT "co-ordinates of several points along curve AB."
  223. 2240  LOCATE 20,C:PRINT D$
  224. 2250  RETURN
  225. 2260  '
  226. 2270  '.....help
  227. 2280  LN=0
  228. 2290  OPEN"I",1,"\data\docfiles\dishant.txt"
  229. 2300  IF EOF(1)THEN 2370
  230. 2310  INPUT#1,Y$
  231. 2320  PRINT "  ";Y$;
  232. 2330  LN=LN+1
  233. 2340  IF LN<24 THEN PRINT ""
  234. 2350  IF LN=24 THEN GOSUB 2410:LN=0:CLS
  235. 2360  GOTO 2300
  236. 2370  CLOSE
  237. 2380  GOSUB 2410
  238. 2390  ERASE X,Y:GOTO 10
  239. 2400  '
  240. 2410  'HARDCOPY
  241. 2420  GOSUB 2530:LOCATE 25,2:COLOR 14,6
  242. 2430  PRINT " Press 1 to print screen, 2 to print screen & ";
  243. 2440  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  244. 2450  Z$=INKEY$:IF Z$="3"THEN GOSUB 2530:RETURN
  245. 2460  IF Z$="1"OR Z$="2"THEN GOSUB 2530:GOTO 2480
  246. 2470  GOTO 2450
  247. 2480  FOR QX=1 TO 24:FOR QY=1 TO 80
  248. 2490  LPRINT CHR$(SCREEN(QX,QY));
  249. 2500  NEXT QY:NEXT QX
  250. 2510  IF Z$="2"THEN LPRINT CHR$(12)
  251. 2520  GOTO 2420
  252. 2530  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  253.